﻿


using System;
using System.Linq;
using Demo.Domain;
using Demo.Repository;

namespace Demo.Repository
{
    public class ModuleRepository : IModuleRepository
    {
        DemoContext db = new DemoContext();

        public void CreateModule(string name, int sort = 0)
        {
            var module = new Module() {  Name = name, Sort = sort};
            db.Module.Add(module);
            db.SaveChanges();
        }

        public Module GetModuleWithName(string name)
        {
            return db.Module.Where(m => m.Name == name).FirstOrDefault();
        }

        public Module GetModuleWithId(int id)
        {
            return db.Module.Where(m => m.ModuleID == id).FirstOrDefault();
        }

        public System.Collections.Generic.IList<Module> GetModuleWithUserId(int userid)
        {
            var express = db.UserModule.Where(s => s.UserID == userid).Select(s => s.ModuleID).ToList();
            return db.Module.Where(m => express.Contains(m.ModuleID)).ToList();
        }

        public System.Collections.Generic.IList<Module> GetModule()
        {
            return db.Module.ToList();
        }

        public bool ChangeModuleWithName(string oldName, string newName)
        {
            var module = db.Module.Where(m => m.Name == oldName).FirstOrDefault();
            module.Name = newName;
            db.SaveChanges();
            return true;
        }

        //public bool ChangeModuleWithName(string Name, int newSort)
        //{
        //    var module = db.Module.Where(m => m.Name == Name).FirstOrDefault();
        //    module.Sort = newSort;
        //    db.SaveChanges();
        //    return true;
        //}
    }
}
